package com.wocai.jrt.orgadmin.appointment.dao;

import java.util.List;

import com.vteba.tx.jdbc.mybatis.annotation.DaoMapper;
import com.vteba.tx.jdbc.mybatis.spi.BaseDao;
import com.wocai.jrt.orgadmin.appointment.bean.AppointmentResBean;
import com.wocai.jrt.orgadmin.appointment.bean.EmpGroupBreifBean;
import com.wocai.jrt.orgadmin.appointment.bean.InvestorBreifBean;
import com.wocai.jrt.orgadmin.appointment.model.Appointment;
import com.wocai.jrt.orgadmin.appointment.model.AppointmentBean;
import com.wocai.jrt.orgadmin.appointment.bean.MatchReqBean;
import com.wocai.jrt.orgadmin.investor.bean.RelationResBean;
import com.wocai.jrt.orgadmin.stats.bean.GroupOdersReqBean;
import com.wocai.jrt.orgadmin.stats.bean.IndexStatsReqBean;

/**
 * 表appointment的MyBatis Dao Mapper。
 * 由代码工具自动生成，可以新增方法，但是不要修改自动生成的方法。
 * @date 2015-08-17 14:27:16
 */
@DaoMapper
public interface AppointmentDao extends BaseDao<Appointment, AppointmentBean, String> {
	
	/**
	 * 获得机构下预约单List，Json格式。
	 * @param model 参数
	 * @return 预约单List
	 */
	List<AppointmentResBean> queryMyList(Appointment model);
	
	/**
	 * 统计全查询的行数
	 * @param model
	 */
	long countQueryBy(Appointment model);
	
	/**
	 * 获取机构下的所有投资人
	 * @param String tenantIdentifier, String investorKey
	 * @return List<InvestorBreifBean>
	 */
	List<InvestorBreifBean> getOrgInvestorList(MatchReqBean mBean);
	
	/**
	 * 查询理财师团队信息
	 * @param String employeeId
	 * @return EmpGroupBreifBean
	 */
	EmpGroupBreifBean getEmpGroupInfo(String employeeId);
	
	/**
	 * 取消预约单
	 * @param String id
	 * @return int
	 */
	int appointmentCancel(Appointment model);
	
	 /**
     * 处理预约单
     * @param model 查询参数，携带ID
     * @return int
     */
	int appointmentDeal(Appointment model);
	
	/**
     * 给预约单分配理财师
     * @param MatchReqBean matchReqBean
     * @return boolean
     */
	boolean allotEmp(com.wocai.jrt.orgadmin.investor.bean.MatchReqBean matchReqBean);
	
	/**
     * 获得预约单联系记录列表
     * @param model 参数
     * @return List<RelationResBean>
     */
	List<RelationResBean> queryRelation(Appointment model);
	
	/**
     * 获取在当前时间之后的未处理的预约单 
     * @param model 参数
     * @return List<RelationResBean>
     */
	List<Appointment> unDealList(Appointment appointment);
	
	 /**
     * 查询理财师团队名称
     * @param groupList
     * @return List<String>
     */
	List<String> getEmpGroup(List<String> list);
	
	/**
     *  预约统计
     * @param  Appointment model
     * @return List<Appointment>
     */
	public List<Appointment> appointmentCount(Appointment model);

	/**获取这个月每天新增预约数统计（按天算，返回的是这个月每天的数据统计）
	 * 会把这个月的所有数据拿出来
	 * @param groupOdersReqBean
	 * @return
	 */
	List<Appointment> queryGroupAppointmentPerformance(GroupOdersReqBean groupOdersReqBean);
	
	int yestodayCount(IndexStatsReqBean indexStatsReqBean);
}